﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Infrastructure;

namespace RegCustomer
{
    public class CustomerCreatedEvent : Event
    {
        public Guid PersonId { get; private set; }
        public String Name { get; private set; }
        public CustomerCreatedEvent(Guid id, string name, State nextState)
            : base (nextState)
        {
            PersonId = id;
            Name = name;
        }
    }

    public class CustomerUpdatedEvent : Event
    {
        public Guid PersonId { get; private set; }
        public String NewName { get; private set; }
        public CustomerUpdatedEvent(Guid id, string newName, State nextState)
            : base(nextState)
        {
            PersonId = id;
            NewName = newName;
        }
    }

    public class CustomerDeactivatedEvent : Event
    {
        public Guid PersonId { get; private set; }
        public String Reason { get; private set; }
        public CustomerDeactivatedEvent(Guid id, string reason, State nextState)
            : base(nextState)
        {
            PersonId = id;
            Reason = reason;
        }
    }

    public class CustomerMadePriorityEvent : Event
    {
        public Guid PersonId { get; private set; }
        public CustomerMadePriorityEvent(Guid id, State nextState)
            : base(nextState)
        {
            PersonId = id;
        }
    }

    public class CustomerMadeStandardEvent : Event
    {
        public Guid PersonId { get; private set; }
        public String Reason { get; private set; }
        public CustomerMadeStandardEvent(Guid id, string reason, State nextState)
            : base(nextState)
        {
            PersonId = id;
            Reason = reason;
        }
    }

        public class DateOfBirthUpdatedEvent : Event
    {
        public Guid PersonId { get; private set; }
        public DateTime DateOfBirth { get; private set; }
        public DateOfBirthUpdatedEvent(Guid id, DateTime dateOfBirth, State nextState)
            : base(nextState)
        {
            PersonId = id;
            DateOfBirth = dateOfBirth;
        }
    }
   
}
